﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 29/03/2014
 * Time: 06:41 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;

namespace Gestión_UTN.blimpl
{
    /// <summary>
    /// Description of provinciablimpl.
    /// </summary>
    public class provinciablimpl : Gestión_UTN.bl.provinciabl
    {
        private static Gestión_UTN.da.provinciada createProvincia = Gestión_UTN.factories.dafactory.createProvincia();
        private static Gestión_UTN.da.paisda createPais = Gestión_UTN.factories.dafactory.createPais();

        public provinciablimpl()
        {
        }

        public bool SaveProvincia(Gestión_UTN.bo.provinciabo provincia)
        {
            bool ingresada = false;

            try
            {
                Gestión_UTN.Entities.Pais pai = (null != provincia) ? createPais.FindPaisByName(provincia.Pais) : null;

                ingresada = (null != pai) ? createProvincia.SaveProvincia(provincia.Nombre, pai.Pai_id) : false;
            }
            catch (exceptions.daexception ex)
            {
                ingresada = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                ingresada = false;
                throw new exceptions.blexception(ex.Message);
            }

            return ingresada;
        }

        public bool DeleteProvincia(string nombre)
        {
            bool eliminada = false;

            try
            {
                eliminada = (!nombre.Equals("")) ? createProvincia.DeleteProvincia(nombre) : false;
            }
            catch (exceptions.daexception ex)
            {
                eliminada = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                eliminada = false;
                throw new exceptions.blexception(ex.Message);
            }

            return eliminada;
        }

        public bool ModifyProvincia(string nombre_anterior, Gestión_UTN.bo.provinciabo provincia)
        {
            bool modificada = false;

            try
            {
                Gestión_UTN.Entities.Pais pais = (!nombre_anterior.Equals("") && null != provincia) ?
                    createPais.FindPaisByName(provincia.Pais) : null;

                modificada = (null != pais) ?
                    createProvincia.ModifyProvincia(nombre_anterior, provincia.Nombre, 0) : false;
            }
            catch (exceptions.daexception ex)
            {
                modificada = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                modificada = false;
                throw new exceptions.blexception(ex.Message);
            }

            return modificada;
        }

        public System.Data.DataTable FindAllProvincias()
        {
            DataTable tablaProvincias = null;

            try
            {
                tablaProvincias = createProvincia.FindAllProvincias();

            }
            catch (exceptions.daexception ex)
            {
                tablaProvincias = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                tablaProvincias = null;
                throw new exceptions.blexception(ex.Message);
            }

            return tablaProvincias;
        }

        public Gestión_UTN.bo.provinciabo FindProvinciaByNombre(string nombre)
        {
            Gestión_UTN.bo.provinciabo provincia = null;

            try
            {
                Gestión_UTN.Entities.Provincia pro = (!nombre.Equals("")) ?
                    createProvincia.FindProvinciaByNombre(nombre) : null;

                Gestión_UTN.Entities.Pais pai = (null != pro) ? createPais.FindPaisById(pro.Pai_id) : null;

                provincia = (null != pai) ? new Gestión_UTN.bo.provinciabo(pro.Prov_id, pro.Nombre, pai.Nombre) : null;

            }
            catch (exceptions.daexception ex)
            {
                provincia = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                provincia = null;
                throw new exceptions.blexception(ex.Message);
            }

            return provincia;
        }

        public Gestión_UTN.bo.provinciabo FindProvinciaById(int id)
        {
            Gestión_UTN.bo.provinciabo provincia = null;

            try
            {
                Gestión_UTN.Entities.Provincia pro = (0 != id) ?
                    createProvincia.FindProvinciaById(id) : null;

                Gestión_UTN.Entities.Pais pai = (null != pro) ? createPais.FindPaisById(pro.Pai_id) : null;

                provincia = (null != pai) ? new Gestión_UTN.bo.provinciabo(pro.Prov_id, pro.Nombre, pai.Nombre) : null;

            }
            catch (exceptions.daexception ex)
            {
                provincia = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                provincia = null;
                throw new exceptions.blexception(ex.Message);
            }

            return provincia;
        }
    }
}
